Virtualization is a technology that provides a software-based abstraction to a physical, hardware-based computer. In conventional solutions, an abstraction layer decouples physical hardware components (e.g., central processing unit (“CPU”), memory, disk drives, storage) from an operating system and allows numerous instances to be run side-by-side as virtual machines (“VMs”) in isolation of each other. In conventional solutions, an operating system within a virtual machine has visibility into and can perform data transactions with a complete, consistent, and normalized set of hardware regardless of the actual individual physical hardware components underneath the software-based abstraction.
Virtual machines, in conventional solutions, are encapsulated as files (also referred to as images) making it possible to save, replay, edit and copy a virtual machine in a manner similar to that of handling a file on a file-system. This capability provides improved manageability, increased flexibility, and rapid administration relative to using physical machines to replace those that are abstracted.
However, virtual machines and conventional data storage implementations for the virtual machines suffer from significant shortcomings as VM files tend to be large in size and consume large amounts of disk space. Further, traditional data storage implementations typically include Storage Area Networks (“SANs”), Network Attached Storage (“NAS”), and the like. While functional, drawbacks to these storage technologies include optimizations for read accesses, while typically being ill-suited for write-intensive applications and operations. These traditional data storage require hardware and computing resources for implementing SAN-based or NAS-based storage, in addition to the computing resources and/or physical hardware components that provide the functionalities of the VMs.
Thus, what is needed is a solution for improving data storage for a virtualized desktop environment without the limitations of conventional techniques.